﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Resources;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
using WeChat.Common;

namespace WeChat.Converter
{
    class MessageLocationConverter : IValueConverter
    {
        //Application.Current.TryFindResource 将逻辑树向上遍历到父元素，直到到达根元素。
        //TryFindResource将逻辑树向上遍历到父元素，直到到达根元素。
        //然后检查应用程序资源。那是你第二次尝试的那个，因为它在那里被发现而工作。所以当你说“TryFindResource（”ArrowStyle“）时，它会在其父元素上的箭头样式上搜索它的窗口资源，然后搜索应用程序资源（全局资源），当你从你的自定义按钮对象中调用它时，不能找到它，因为你的ArrowStyle资源不满足上述条件。
        //你需要调用它在你的“即从用户控件派生自定义WPF控件”或它的后代。
        //我认为，如果你无法将其移动到应用程序资源或将资源字典添加到具有所有全局资源（样式）的应用程序资源中：
        //<Application.Resources> 
        //    <ResourceDictionary> 
        //     <ResourceDictionary.MergedDictionaries> 
        //      <ResourceDictionary Source = "....Your resources.xaml" />
        //     </ResourceDictionary.MergedDictionaries> 
        //    </ResourceDictionary> 
        //</Application.Resources> 
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (Style)Application.Current.TryFindResource(((TypeLocalMessageLocation)value).ToString());
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
